Адміністрація вирішила продати даний сайт. За детальною інформацією звертайтесь за адресою: rozrahu@gmail.com

Емулювання роботи RS-232

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Кафедра ЕОМ

Інформація про роботу

Рік:
2005
Тип роботи:
Звіт
Предмет:
Периферійні пристрої
Група:
КСМ-41

Частина тексту файла

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА” Кафедра ЕОМ Звіт до лабораторної роботи №1 з предмету: Периферійні пристрої тема: Емулювання роботи RS-232. Мета роботи: Створити программу, що емулює роботу RS-232. Теоретичні відомості В більшості схем, що містять інтерфейс RS-232С. дані перелаються асинхронно, тобто у вигляді послідовності пакету даних. Кожний пакет містить один символ коду АSСII, причому інформація в пакеті достатня для його декодування без окремого сигналу синхронізації. Символи коду АSСII представляються сьома бітами, наприклад буква А має код 1000001. Щоб передати букву А по інтерфейсу RS-232С, необхідно ввести додаткові біти, що позначають початок і кінець пакету. Крім того, бажано добавити зайвий біт для простого контролю помилок по паритету (парності). Найбільш широко поширений формат, що включає один стартовий біт. один біт паритет) і два степових біта. Початок пакету даних завжди відзначає низький рівень стартового біта. Після нього слідує 7 біт даних символа коду АSСII. Біт парності містить 1 або 0 так, щоб загальне число одиниць в 8-бітной групі було непарним. Останнім передаються два стопових біта, представлених високим рівнем напруги. Еквівалентний ТТЛ-сигнал при передачі букви А показаний на мал. 2.  Мал. 2. Представлення коду букви А сигнальними рівнями ТТЛ. Таким чином, повне асихронно передаване слово складається з 11 біт (фактично дані містять тільки 7 біт) і записується у вигляді 01000001011. Використовувані в інтерфейсі RS-232С рівні сигналів відрізняються від рівнів сигналів, діючих в комп'ютері. Логічний 0 (Space) представляється позитивною напругою в діапазоні від +3 до +25 В, логічна 1 (Mark) — негативною напругою в діапазоні від -3 до -25 В. На мал. З показаний сигнал в тому вигляді, в якому він існує на лініях TXD і RXD інтерфейсу RS-232С.  Мал. 3. Вид коду букви А на сигнальних лініях TXD і RXD Зсув рівня, тобто перетворення ТТЛ-уровней в рівні інтерфейсу RS-232С і навпаки проводиться спеціальними мікросхемами драйвера лінії і приймача лінії. Текст програми //-------------- CGenerator ------------------ class CGenerator { private: int difer; bool front; // current front value; bool change; // 0 -> 1 && 1 -> 0 int count_limit; // limit value of signals before "1" standing int count; // current value of signals before "1" standing int i,j; public: CGenerator(int step_for_count) : count(0), front(true), difer(0) { count_limit = step_for_count; i=0; j=0; } void process(CPaintDC *, int); int get_count() { return count; } bool get_front() { return front; } bool get_change() { return change; } int get_difer() { return difer; } }; inline void CGenerator::process(CPaintDC *dc, int xxx) { i++; j++; change = false; difer = 0; if (i > count_limit) { front = !front; if (front) difer = 1; i = 0; if (front == true) count++; change = true; } if (get_change() == true) { if (get_front() == true) { dc->MoveTo(10+j, xxx); dc->LineTo(10+j, xxx+9); } else { dc->MoveTo(10+j, xxx+8); dc->LineTo(10+j, xxx-1); } } if (get_front() == true) { dc->SetPixel(10+j, xxx, 0x5555); } else dc->SetPixel(10+j, xxx+8, 0x5555); } // ------------------ CLine --------------------- class CLine { private: CString value; public: CLine(CString sss) : value(sss) {} CString get_value() { return value; } }; // ---------------- CTransmiter ----------------- class CTransmitter { private: CString value; bool bit; bool value_bit; int i, j, count, zatrumka, x, y, flag, k, size, current; char symb; int sqr(int f); public: CTransmitter(CLine *line) { i = j = count = zatrumka = x = y = flag = k = current = 0; y=8; bit = false; value_bit = false; value = line->get_value(); size = value.GetLength(); } bool stop_bit(); bool next_bit(); bool get_data() { return value_bit; } bool get_count() { return count; } void process(CPaintDC *, int, int, int, CGenerator); }; inline bool CT...
Антиботан аватар за замовчуванням

01.01.1970 03:01

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Завантаження файлу

Якщо Ви маєте на своєму комп'ютері файли, пов'язані з навчанням( розрахункові, лабораторні, практичні, контрольні роботи та інше...), і Вам не шкода ними поділитись - то скористайтесь формою для завантаження файлу, попередньо заархівувавши все в архів .rar або .zip розміром до 100мб, і до нього невдовзі отримають доступ студенти всієї України! Ви отримаєте грошову винагороду в кінці місяця, якщо станете одним з трьох переможців!
Стань активним учасником руху antibotan!
Поділись актуальною інформацією,
і отримай привілеї у користуванні архівом! Детальніше

Оголошення від адміністратора

Антиботан аватар за замовчуванням

пропонує роботу

Admin

26.02.2019 12:38

Привіт усім учасникам нашого порталу! Хороші новини - з‘явилась можливість кожному заробити на своїх знаннях та вміннях. Тепер Ви можете продавати свої роботи на сайті заробляючи кошти, рейтинг і довіру користувачів. Потрібно завантажити роботу, вказати ціну і додати один інформативний скріншот з деякими частинами виконаних завдань. Навіть одна якісна і всім необхідна робота може продатися сотні разів. «Головою заробляти» продуктивніше ніж руками! :-)

Новини